#include <stdlib.h>

#ifndef OPEN_COMPILER_ENV_HEADER
#define OPEN_COMPILER_ENV_HEADER

//编程中，每增加一个变量，多开辟的内存空间 
// 声明结构体变量  VarWithOffset， 头文件中不能带定义！
//typedef 用来定义同义词
typedef struct VarWithOffset {
   char *var_name;
   int offset;
} VarWithOffset;

//声明结构体积变量 Environment  头文件中不能带定义！
typedef struct Environment {
   size_t size; //size_t 在catddef头文件中定义的机器相关的无符号整型，该类型足以保存最大数组长度
   VarWithOffset *items;  //全部变量占用的内存
} Environment;

Environment *envionment_new();

//开辟变量用内存
void environment_set_offset(Environment *env, char *var_name, int offset);

//检测或获取变量占用的内存，做释放用，销毁变量用
int environment_get_offset(Environment *env, char *var_name);

//释放某变量的内存
void environment_free(Environment *env);


#endif